package juc;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

//实现Callable实现多线程
/*
实现Callable实现多线程与前两种实现多线程的方式的区别:
实现Callable方式可以有返回值和抛出异常，Runnable方式不可以抛出异常和不能有返回值。

jvm
java8虚拟机的更新？
什么是OOM？什么是overflowStack，有哪些方法分析？
jvm常用参数调优有哪些？
谈谈jvm，你对类加载器的认识？
 */
public class Test12 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyThread myThread = new MyThread();

        FutureTask<Integer> task = new FutureTask<>(myThread);

        new Thread(task,"线程A").start();

        Integer result = task.get();
        System.out.println(result);
    }
}
class MyThread implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        System.out.println("--------线程执行了-------");
        return 1024;
    }
}